#include <stdlib.h>
#include <assert.h>
#include <err.h>

#include "edge.h"
#include "node.h"

struct sEdge{
    node n;
    unsigned int cap;
};

edge edge_create(const node n, const unsigned int cap){
    edge e = NULL;

    assert(n != NULL);

    /* Asigno memoria para alojar la estructura */
    e = (edge) malloc(sizeof(struct sEdge));
    if (e == NULL)
        return e;/* Si no hay mem devuelvo NULL */

    /* Inicializo la estructura */
    e->n = n;
    e->cap = cap;

    assert(e != NULL);
    assert(e->n != NULL);

    return e;
}

edge edge_destroy(edge e){
    assert(e != NULL);
    assert(e->n != NULL);

    /* Libero la memoria alojada por la arista */
    e->n = NULL; /* El nodo se libera desde otro lado. */
    free(e);
    e = NULL;

    return e;
}

node edge_getNeighbor(const edge e){
    assert (e != NULL);

    return e->n;
}

unsigned int edge_getCap(const edge e){
    assert(e != NULL);

    return e->cap;
}

